V-SYSTEM

1. Въведение

V-System представлява симулатор за схеми, описани на езика VHDL. Етапите на работа и обмена на данни между тях са показани на фиг. 1.

Фигура 1. Структура на V-System

2. Създаване на VHDL проект

Подготовка на входните файлове

За всеки отделен проект се създава нова проектна директория (например с помощтта на Windows Explorer). За определеност в изложението ще приемем, че проeктната директория е c:\vhdl\mpis.

Самото описанието на VHDL проекта се състои от един или няколко текстови файла. Те се създават с текстов редактор, който не е част от програмата V-System. Проекта, който ще използваме като пример, е записан във файла c:\vhdl\mpis\example.vhd. Пълният текст на този пример може да се намери в Тема  3.

Стартиране на V-System

От инсталационната директория на пакета V-System се стартира програмата vsystem.exe

Начално установяване на V-System

С командата File => Directory се отива в по-рано създадената проектна директория.

С командата Project => New се създава файл с описанието на проекта. Името на този файл трябва да бъде vsystem.ini, а неговото съдържание се попълва автоматично в процеса на работа с V-System.

С командата Library => New се създава работна библиотека с име work. В нея ще се записват резултатите от компилацията на проектните единици.

Компилация на входния VHDL файл

Избира се командата File => Compile. В прозореца (фиг. 2) се указва името на входния файл и се натиска клавиша Compile.

Фиг. 2. Прозорец за избор на файл за компилация

Съобщенията за грешки при компилация се извеждат в прозореца Transcript. След компилирането на всички входни файлове прозорецът на компилатора се затваря с натискане на клавиша Done. Ако при компилацията има грешки то VHDL файла трябва да се корегира с текстовия редактор и повторно да се компилира.

3. Симулация на VHDL проект

Инициализиране на симулатора

За преминаване в режим на симулация се използва командата File => Simulate. В прозореца (фиг. 3) се избира проектната единица (entity), която ще бъде симулирана.

Тази проектна единица трябва да представлява тестова установка, т.е. да включва в себе си както VHDL модела, който ще бъде верифициран, така и процеси за подаване на входни въздействия.

След инициализирането на екрана се появяват следните прозорци:

Фиг. 3. Избор на тестова установка Фиг. 4. Йерархия на VHDL проект

Source - съдържа VHDL текста на избраната проектна единица;

List - показва резултатите от симулацията в табличен вид;

Process - показва имената на процесите, които ще бъдат изпълнени в текущия симулационен цикъл;

Variables - показва имената и стойностите на променливите.;

Signals - показва имената и стойностите на сигналите в проекта;

Wave - показва резултатите във вид на времедиаграми;

Structure - показва йерархичната структура на VHDL проекта.

От показания пример се вижда, че за симулация е избрана архитектурата ADDER8_256 на проектната единица TESTBENCH. При описанието на TESTBENCH е използван компонента UUT, на който съответства проектната единица ADDERN. Използвани са и пакетите STD_LOGIC_1164 и STANDARD. От своя страна ADDERN е съставен от осем компонента ADDER.

Стартиране на симулацията

Симулацията се стартира като в прозореца Transcript се напише командата run <време>. Като параметър се указва времето, до което да се извършва симулацията. Например run 100 us означава, че симулацията ще завърши след 100 микросекунди симулационно време или по-рано ако се изчерпи списъка на заплануваните транзакции. Симулацията можа да бъде прекъсната по всяко време с натискането на екранния клавиш Break.

Когато е необходимо симулацията да се повтори от начало, се използва командата File => Restart. Тя установява симулационното време в нула и заличава от паметта всички предишни резултати. Подобно рестартиране се налага в следните случаи:

След промяна и компилация на някой от входните VHDL файлове;

След добавяне на нови сигнали в прозореца Wave.

4. Анализ на резултатите от симулацията

Резултатите от симулацията с програмата V-System са два типа:

Промени на състоянията на сигналите, които се визуализират в прозорците Wave и List;

Съобщения издавани от оператори assert включени в VHDL проекта - отпечатват се в прозореца Transcript.

За да се наблюдават определени сигнали те трябва да бъдат добавени в прозорците Wave и / или List. Съществуват няколко възможни подхода в зависимост от това дали за визуализация се избират отделни сигнали или всички сигнали в дадена област от проекта. В случая под "област от проекта" се разбира проектна единица (например TESTBENCH) или неин компонент (например компонента ADDER, генериран от оператора GEN_1).

Избор на единични сигнали

От прозореца Signals с мишката се избира сигнал;

С командата Signals => Add to Waveform => Selected signal избрания сигнал се добавя в прозореца Wave;

С командата Signals => Add to List => Selected signal избрания сигнал се добавя в прозореца List.

Избор на всички сигнали в дадена област от проекта

От прозореца Structure се избира област от йерархията на проекта;

С командата Signals => Add to Waveform => Signals in Region всички сигнали в избраната област се добавят в прозореца Wave;

С командата Signals => Add to List => Signals in Region всички сигнали в избраната област се добавят в прозореца List.

Възможно е наведнъж да се добавят всички сигнали от цялата йерархия на проекта. Това става с командите Signals => Add to Waveform => Signals in Design или Signals => Add to List => Signals in Design.

Представяне на резултатите във вид на времедиаграми - Wave

В прозореца Wave (фиг. 5) сигналите се представят по два различни начина в зависимост от типа им.

Скаларните сигнали се изчертават като последователност от ниски и високи лигически нива. Когато сигнала е в неопределено или високоимпедансно състояние неговата времедиаграма има междинно ниво. Освен това е възможно различните нива на сигналите да се оцветят в различни цветове с командата Window => Color => Wave.

Сигналните вектори се визуализират чрез техните числови стойности. С командата Options => Signal Options => Radix може да се избира използваната бройна система: двоична, осмична, десетична или шестнайсетична. При необходимост да се наблюдават отделните сигнали във вектора, с мишката се щраква еднократно върху знака '+' вляво от името на вектора.

Прецизното отчитане на времеинтервали се извършва с помощта на измервателни курсори. Те се добавят с командата Cursor => Add.

Фиг. 5. Представяне на резултатите от симулацията в графичен вид

Представяне на резултатите във вид на таблица - List

Всеки ред в прозореца List (фиг. 6) съответства на промяна на стойността на някой от наблюдаваните сигнали. Предимството на този тип представяне е възможността с максимална точност да се определи кога е настъпило дадено събитие.

Фиг. 5. Представяне на резултатите от симулацията в табличен вид

В първите две колони от таблицата е показано в кой момент от симулационното време и на кой цикъл на симулация е настъпила промяната. В останалите колони се отпечатват стойностите на избраните сигнали. За векторните сигнали може да се избира желаната бройна система чрез командата Options => Signal Options => Radix. Символите, които се използват за означаване на състоянията, зависят от типа на съответния сигнал.